Applications and computing services are often made available over the Internet or other computer networks. Content providers, application providers, and/or computing service providers often utilize remote computing services to provide access to electronic resources, such as web services. Electronic resources may include processing services, memory services, storage services, networking services and generally any computing services supported by a hardware system substrate that used in a computing environment. Often the software used to support the desired services are dynamically scalable to meet the changing load for the services at any given time. Users, for example, may rent, lease, or otherwise pay for access to networked computing resources and computing services, and thus reduce the burden of providing local hardware and/or software for computing services, as compared with implementations without network accessible computing services.
To facilitate increased utilization of network accessible computing resources provided via a data center, virtualization technologies can allow a single physical computing machine to host one or more instances of virtual machines (e.g., computing instances) that appear and operate as independent machines to a connected computer user. With virtualization, the single physical computing device can create, maintain or shut down virtual machines in a dynamic manner. In turn, users can request computer resources from a data center and be provided with varying numbers of virtual machine resources on an “as needed” basis or at least on an “as requested” basis.
As the scale and scope of data centers has increased, the task of provisioning, administering and monitoring the physical and virtual computing resources of the data center has become increasingly complicated. Virtual machines (e.g., computing instances) may be migrated from one host to another for: maintenance, providing hardware which better supports the virtual machine or for other reasons. In a process known as live migration of virtual machines, a virtual machine's runtime state may be moved to a different physical host without significant disruption or downtime. This enables efficient and flexible management in a virtual infrastructure for dynamic optimization of virtual machine performance.